
/**
 * 
 * 分苹果
 * 
 * 题目描述

A、B两个人把苹果分为两堆

A希望按照他的计算规则等分苹果，他的计算规则是按照二进制加法计算，并且不计算进位 12+5=9（1100 + 0101 = 9），
B的计算规则是十进制加法，包括正常进位，B希望在满足A的情况下获取苹果重量最多。
输入苹果的数量和每个苹果重量，输出满足A的情况下B获取的苹果总重量。

如果无法满足A的要求，输出-1。

输入描述
输入第一行是苹果数量：3

输入第二行是每个苹果重量：3 5 6

输出描述
输出第一行是B获取的苹果总重量：11

备注
数据范围

1 ≤ 总苹果数量 ≤ 20000
1 ≤ 每个苹果重量 ≤ 10000
用例
输入	3
3 5 6
输出	11
说明	无
输入	8
7258 6579 2602 6716 3050 3564 5396 1773
输出	35165
说明	无

 */

import java.util.Arrays;
import java.util.Scanner;

/**
  * 
  题目解析   -- 分积木
  计算逻辑其实就是按位异或，即两个相应的二进制位值不同则为1，否则为0
  因此我们只要按位异或所有重量，最终结果为0的话，才能按照Koko的逻辑平分总重量。

而一旦可以平分总重量，则减去任意一个重量，都可以分成两份相同的二进制数，而为了使Solo能分得最大重量，则必然减去一个最轻的给Koko。

  */

public class 分苹果 {
    public static void main(String[] args) {
    
        try{

            Scanner scanner = new Scanner(System.in);

            //苹果个数
            int appleCount = scanner.nextInt();

            //苹果重量数组
            int[] appleWeightArr = new int[appleCount];
            for(int i=0; i< appleCount; i++){
                appleWeightArr[i] = scanner.nextInt();
            }
            //Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

            //对重量排序 从小到大
            Arrays.sort(appleWeightArr);

            //获取第一个值

            int xOr = appleWeightArr[0];

            for(int i =1; i< appleWeightArr.length; i++){

                //按位异或所有重量，最终结果为0的话，才能按照Koko的逻辑平分总重量
                //二进制加法 不进位 就是异或操作
                System.out.println("异或前="+xOr);
                xOr ^= appleWeightArr[i];
                System.out.println("异或后="+xOr);

                //自己和自己异或都为 0

            }

            if(0 == xOr){

                //符合要求
                int total = Arrays.stream(appleWeightArr).reduce(0, Integer::sum);

                //减去最轻的一个给对方
                System.out.println(""+(total - appleWeightArr[0]));

            } else{

                //不符合
                System.out.println("-1");
            }

        }catch(Exception e){

            e.printStackTrace();
        }
    }
}
